//
//  DMInterstitialSceneInterceptor.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/1/15.
//

#import <Foundation/Foundation.h>
#import "DMInterstitialScenes.h"

NS_ASSUME_NONNULL_BEGIN

/**
 * 插屏广告场景拦截器
 * 负责处理时间场景的拦截逻辑，控制广告展示频率
 */
@interface DMInterstitialSceneInterceptor : NSObject

/**
 * 单例实例
 */
+ (instancetype)sharedInterceptor;

/**
 * 是否启用场景拦截功能
 */
@property (nonatomic, assign) BOOL interceptorEnabled;

/**
 * 最小展示间隔（秒），默认30秒
 */
@property (nonatomic, assign) NSTimeInterval minimumShowInterval;

/**
 * 每日最大展示次数，默认10次
 */
@property (nonatomic, assign) NSInteger maxDailyShows;

/**
 * 检查场景是否应该被拦截
 * @param scene 场景名称
 * @return YES表示应该拦截，NO表示可以展示
 */
- (BOOL)shouldInterceptScene:(NSString *)scene;

/**
 * 记录场景展示
 * @param scene 场景名称
 */
- (void)recordSceneShow:(NSString *)scene;

/**
 * 获取场景今日展示次数
 * @param scene 场景名称
 * @return 今日展示次数
 */
- (NSInteger)getTodayShowCount:(NSString *)scene;

/**
 * 获取场景上次展示时间
 * @param scene 场景名称
 * @return 上次展示时间，如果从未展示则返回nil
 */
- (NSDate * _Nullable)getLastShowTime:(NSString *)scene;

/**
 * 重置所有场景的展示记录
 */
- (void)resetAllSceneRecords;

/**
 * 重置指定场景的展示记录
 * @param scene 场景名称
 */
- (void)resetSceneRecord:(NSString *)scene;

/**
 * 获取场景拦截状态信息
 * @param scene 场景名称
 * @return 拦截状态信息字典
 */
- (NSDictionary *)getSceneInterceptInfo:(NSString *)scene;

@end

NS_ASSUME_NONNULL_END